
const init = {
    count: 0
}
const state = JSON.parse(localStorage.getItem('count')) || init
const mutations = {
    add(state) {
        state.count++
        localStorage.setItem('count', JSON.stringify(state))
    },
    addn(state, { n }) {
        state.count += n
        localStorage.setItem('count', JSON.stringify(state))
    }
}
const actions = {
    addWait({ commit }) {
        setTimeout(() => {
            // 可以调用state的方式只有一种,就是用mutations中的函数进行修改,而异步函数只能通过暂缓事件执行同步mutation的方式实现异步
            commit('add')
        }, 1000)
        // 其实直接在mutation中使用异步页面中也可以接收到数据,但是开发者工具不会出现修改,所以为了完美不出bug,使用actions实现异步操作
    },
    addnWait({ commit }, payload) {
        setTimeout(() => {
            //使用有参数的时候,和在组件中使用是一样的
            commit('addn', payload)
        }, 1000)
    }
}
const getters = {
    // 数据的预处理
    countPow(state) { // 处理数据,函数必定接收到一个state
        // getters中的书写形式类似于使用计算属性
        // 必须含有return,受命名空间前瞻影响
        // pow求其多平方
        return Math.pow(state.count, 2)
    }
}

export default {
    // 开启命名空间
    namespaced: true,
    state,
    mutations,
    actions,
    getters,
}